#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>

void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{
    int dst = m + n - 1;
    int src1 = m - 1;
    int src2 = n - 1;
    for (src1 = m - 1, src2 = n - 1; src1 >= 0 || src2 >= 0; dst--)
    {
        if (src2 < 0)
        {
            break;
        }
        else if (src1 < 0)
        {
            *(nums1 + dst) = *(nums2 + src2);
            src2--;
        }
        else
        {
            if (*(nums1 + src1) > *(nums2 + src2))
            {
                *(nums1 + dst) = *(nums1 + src1);
                src1--;
            }
            else
            {
                *(nums1 + dst) = *(nums2 + src2);
                src2--;
            }
        }
    }
}

void Test()
{
    int arr1[10] = { 1,4,6,8,9 };
    int arr2[5] = { 2,3,4,6,7 };
    int sz1 = sizeof(arr1) / sizeof(arr1[0]);
    int sz2 = sizeof(arr2) / sizeof(arr2[0]);
    int m = sz1 - sz2;
    merge(arr1, sz1, m, arr2, sz2, sz2);
    int i = 0;
    for (i = 0; i < sz1; i++)
    {
        printf("%d ", arr1[i]);
    }
}

int main()
{
    Test();
    return 0;
}